package com.canaan.business.service.agv;

import com.canaan.business.domain.agv.AgvRcsRecord;
import com.canaan.common.core.domain.R;

import java.util.List;

/**
 * rcs调用记录Service接口
 *
 * @author 
 * @date 2023-03-02
 */
public interface IAgvRcsRecordService {
    /**
     * 查询rcs调用记录
     *
     * @param id rcs调用记录主键
     * @return rcs调用记录
     */
    AgvRcsRecord selectAgvRcsRecordById(Long id);

    /**
     * 查询rcs调用记录列表
     *
     * @param agvRcsRecord rcs调用记录
     * @return rcs调用记录集合
     */
    List<AgvRcsRecord> selectAgvRcsRecordList(AgvRcsRecord agvRcsRecord);

    /**
     * 新增rcs调用记录
     *
     * @param agvRcsRecord rcs调用记录
     * @return 结果
     */
    int insertAgvRcsRecord(AgvRcsRecord agvRcsRecord);

    /**
     * 批量新增rcs调用记录
     *
     * @param agvRcsRecordList rcs调用记录列表
     * @return 结果
     */
    int batchInsertAgvRcsRecord(List<AgvRcsRecord> agvRcsRecordList);

    /**
     * 修改rcs调用记录
     *
     * @param agvRcsRecord rcs调用记录
     * @return 结果
     */
    int updateAgvRcsRecord(AgvRcsRecord agvRcsRecord);

    /**
     * 批量修改rcs调用记录
     *
     * @param agvRcsRecordList rcs调用记录列表
     * @return 结果
     */
    int batchUpdateAgvRcsRecord(List<AgvRcsRecord> agvRcsRecordList);

    /**
     * 批量删除rcs调用记录
     *
     * @param ids 需要删除的rcs调用记录主键集合
     * @return 结果
     */
    int deleteAgvRcsRecordByIds(Long[] ids);

    /**
     * 删除rcs调用记录信息
     *
     * @param id rcs调用记录主键
     * @return 结果
     */
    int deleteAgvRcsRecordById(Long id);

    /**
     * 调用 rcs接口 失败记录
     *
     * @param rcsRecordEntity  rcs记录实体
     * @param fail 失败实体
     * @param e 捕捉异常
     */
    void setRcsFailRecord(AgvRcsRecord rcsRecordEntity, R fail, Exception e);

    /**
     * 重发
     *
     * @param id id
     * @return com.canaan.wcs.entity.agv.AgvRcsRecordEntity
     */
    AgvRcsRecord resetById(Long id);

}
